提到模擬器,大家會想到什麼呢?
我想應該大部分的人直覺會先想到的是手機模擬器吧,只要在Google搜尋輸入模擬器,最先看到的無非是各大手機模擬器品牌的廣告,內容則是標榜說運行速度最快,最流暢,超高清晰度,支援手把操作等等,透過這些模擬器,玩家們可以在效能較好的電腦上大殺四方,並且可以透過手把及鍵盤實現在手機上很難達到的操作。
但可能很少人知道,在IC設計領域,許多硬體,特別是處理器也都會有人來開發其對應的模擬器,這是為什麼呢? 其實答案跟玩家們需要手機模擬器的原因很像,筆者先在這裡跟大家賣個關子,等到後續的章節就會向大家分享
這系列文章會跟大家簡單介紹硬體模擬器的目的為何,以及各式實現方法的利弊,一直到透過C++去實現一個最簡單可以開啟linux的模擬器。
為什麼想要寫這個主題
RISC-V作為一個開源的處理器架構早已不是個新聞,而大部分的人對於RISC-V通常都是作為使用者的角度去思考,比較不會細究每一個自己撰寫的程式語言最終會被翻成怎樣的機器語言,甚至在硬體的角度上是怎麼實現的,而實現RISC-V的模擬器無疑是在低成本下能跳脫出RISC-V使用者的角色並學習RISC-V架構的方法之一 (相較購買開發版甚至實作硬體,這個成本真的很低)
筆者剛好有一些模擬器操作使用及修改的經驗,因此希望能透過今年鐵人賽的機會跟大家分享RISC-V處理器的模擬器實作,另外一方面是近年來也有許多精簡且高效的RISC-V的開源模擬器,例如以不到萬行程式碼的內容完成有能力開啟linux的模擬器的mini-rv32 “cnlohr/mini-rv32ima“ ,及能夠執行doom等遊戲甚至能輸出音效的rv32emu "sysprog21/rv32emu" 等等,每當看到這些模擬器時,就一直會有想要敲一個自己的模擬器的衝動,為此也藉著鐵人賽來逼著自己在下班時間還能乖乖坐在螢幕前coding。
適合哪些人看
透過這篇文章,我能獲得哪些內容
能對於模擬器有基本認知,瞭解常見模擬手法及優缺點,並實作一個簡單而能開啟linux的64-bit RISC-V模擬器,及模擬器可以具備哪些功能方便操作者及設計者作使用。
本系列文章預計會有的章節
模擬器相關知識科普 (約1~3天)
常見RISC-V模擬器的介紹及使用方法 (約1~3天)
開發/測試環境搭建 (約1~2天)
RISC-V指令介紹及模擬器實作 (約15天)
Linux boot-up (約5天)
本系列文章不會有的內容
參考資料 (新增中)
A Survey of Computer Architecture Simulation Techniques and Tools
碎碎念 : 拖著拖著就到9/16了XD,先期許自己能夠完賽吧~~